home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 58189 / 58189.xpi / modules / Logger.jsm < prev    next >
Text File  |  2010-01-08  |  3KB  |  103 lines

  1. /*
  2.  * The Logger supports logging operations. Messages have different severity types,
  3.  * which can be used to filter the output based on the log level.
  4.  */
  5.  
  6. var EXPORTED_SYMBOLS = [ ];
  7. Components.utils.import("resource://csfiremodules/CsFireCommon.jsm");
  8.  
  9. CsFire.Logger = new function() {
  10.     this.SEVERITY_DEBUG = 0;
  11.     this.SEVERITY_TEST  = 1; //Before debug, so we can disable dirty debug output during test runs
  12.     this.SEVERITY_INFO  = 2;
  13.     this.SEVERITY_WARN  = 3;
  14.     this.SEVERITY_ERROR = 4;
  15.     
  16.     this.SEVERITY_NAMES = {};
  17.     this.SEVERITY_NAMES[this.SEVERITY_TEST]  = "TEST";
  18.     this.SEVERITY_NAMES[this.SEVERITY_DEBUG] = "DEBUG";
  19.     this.SEVERITY_NAMES[this.SEVERITY_INFO]  = "INFO ";
  20.     this.SEVERITY_NAMES[this.SEVERITY_WARN]  = "WARN ";
  21.     this.SEVERITY_NAMES[this.SEVERITY_ERROR] = "ERROR";
  22.     
  23.     this.LOG_LEVEL = this.SEVERITY_INFO;
  24. };
  25.  
  26. /*
  27.  * Logs a message with severity "TEST". This method can be called by other modules
  28.  * and is especially useful for output from test cases
  29.  */
  30. CsFire.Logger.test = function(message) {
  31.     this._log(message, this.SEVERITY_TEST);
  32. };
  33.  
  34. /*
  35.  * Logs a message with severity "DEBUG". This method can be called by other modules.
  36.  */
  37. CsFire.Logger.debug = function(message) {
  38.     this._log(message, this.SEVERITY_DEBUG);
  39. };
  40.  
  41. /*
  42.  * Logs a message with severity "INFO". This method can be called by other modules.
  43.  */
  44. CsFire.Logger.info = function(message) {
  45.     this._log(message, this.SEVERITY_INFO);
  46. };
  47.  
  48. /*
  49.  * Logs a message with severity "WARN". This method can be called by other modules.
  50.  */
  51. CsFire.Logger.warn = function(message) {
  52.     this._log(message, this.SEVERITY_WARN);
  53. };
  54.  
  55. /*
  56.  * Logs a message with severity "ERROR". This method can be called by other modules.
  57.  */
  58. CsFire.Logger.error = function(message) {
  59.     this._log(message, this.SEVERITY_ERROR);
  60. };
  61.  
  62. /*
  63.  * Log a message with the associated severity. This function constructs the final
  64.  * message that will be logged. The output channel is determined here by which 
  65.  * function is called to actually log the message.
  66.  *
  67.  * This function is meant for internal use only.
  68.  */
  69. CsFire.Logger._log = function(message, severity) {
  70.     if(this.LOG_LEVEL <= severity) {
  71.         var text = "[" + this._getTimeStamp() + "][CsFire][" + this.SEVERITY_NAMES[severity] + "][ " + message + "]\n";
  72.         this._logToSystemConsole(text);
  73.     }
  74. };
  75.  
  76. /*
  77.  * Return a timestamp to include in a log entry
  78.  */
  79. CsFire.Logger._getTimeStamp = function() {
  80.     function fill(n) {
  81.         if(n < 10) {
  82.             return "0" + n;
  83.         }
  84.         else {
  85.             return n;
  86.         }
  87.     }
  88.  
  89.     var now = new Date();
  90.     return fill(now.getDate()) + "/" + fill(now.getMonth() + 1) + "/" + now.getFullYear() + " " + fill(now.getHours()) + ":" + fill(now.getMinutes()) + ":" + fill(now.getSeconds());
  91. }
  92.  
  93. /*
  94.  * Logs a message to the system console, which is a terminal on the Linux OS or the
  95.  * Firefox console on Windows (firefox.exe -console).
  96.  *
  97.  * This function is meant for internal use only.
  98.  */
  99. CsFire.Logger._logToSystemConsole = function(text) {
  100.     dump(text);
  101. };
  102.  
  103.